/* Copyright 2020 UPMEM. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 */

#ifndef UFI_DPU_COMMANDS_H
#define UFI_DPU_COMMANDS_H

#define CI_EMPTY ((0x0000000000000000L))
#define CI_BIT_ORDER(ne, stutter, c2d, d2c)                                    \
	((0x0100000000000000L) | ((u64)(ne) << 0) | ((u64)(stutter) << 8) |    \
	 ((u64)(c2d) << 16) | ((u64)(d2c) << 32))
#define CI_IDENTITY ((0x01FF000000000000L))
#define CI_SOFTWARE_RESET(factor, cycle_accurate)                              \
	((0x01FF00000000FF00L) | ((u64)(factor) << 0) |                        \
	 ((u64)(cycle_accurate) << 4))
#define CI_THERMAL_CONFIG(threshold)                                           \
	((0x01FF000000FF0000L) | ((u64)(threshold) << 0))
#define CI_CMD_DURATION_FUTUR(duration)                                        \
	((0x01FF000000FFFF00L) | ((u64)(duration) << 0))
#define CI_RES_DURATION_FUTUR(duration)                                        \
	((0x01FF0000FF000000L) | ((u64)(duration) << 0))
#define CI_RES_SAMPLING_FUTUR(sampling)                                        \
	((0x01FF0000FF00FF00L) | ((u64)(sampling) << 0))
#define CI_BYTE_ORDER ((0x7777777777777777L))
#define CI_NOP ((0xFF00000000000000L))
#define CI_SELECT_DPU_STRUCT                                                   \
	((0x1100000000000000L) | ((u64)(0b10) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_SELECT_DPU_FRAME(dpu_id)                                            \
	((0x3300000000000000L) | ((u64)(0xa) << 0) | ((u64)(dpu_id) << 8) |    \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_SELECT_GROUP_STRUCT                                                 \
	((0x1100000000000000L) | ((u64)(0b10) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_SELECT_GROUP_FRAME(group_id)                                        \
	((0x3300000000000000L) | ((u64)(0x9) << 0) | ((u64)(group_id) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_SELECT_ALL_STRUCT                                                   \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_SELECT_ALL_FRAME                                                    \
	((0x3300000000000000L) | ((u64)(0x8) << 0) | ((u64)(0xff) << 8) |      \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_WRITE_GROUP_STRUCT                                                  \
	((0x1100000000000000L) | ((u64)(0b10) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_WRITE_GROUP_FRAME(group_id)                                         \
	((0x3300000000000000L) | ((u64)(0xc) << 0) | ((u64)(group_id) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DMA_CTRL_READ_STRUCT                                                \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DMA_CTRL_READ_FRAME                                                 \
	((0x3300000000000000L) | ((u64)(0x10) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DMA_CTRL_WRITE_STRUCT                                               \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40))
#define CI_DMA_CTRL_WRITE_FRAME(byte0, byte1, byte2, byte3, byte4, byte5)      \
	((0x3300000000000000L) | ((u64)(byte0) << 0) | ((u64)(byte1) << 8) |   \
	 ((u64)(byte2) << 16) | ((u64)(byte3) << 24) | ((u64)(byte4) << 32) |  \
	 ((u64)(byte5) << 40) | ((u64)(0xa7) << 48))
#define CI_DMA_CTRL_CLEAR_STRUCT                                               \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40))
#define CI_DMA_CTRL_CLEAR_FRAME                                                \
	((0x3300000000000000L) | ((u64)(0) << 0) | ((u64)(0) << 8) |           \
	 ((u64)(0) << 16) | ((u64)(0) << 24) | ((u64)(0) << 32) |              \
	 ((u64)(0) << 40) | ((u64)(0xa6) << 48))
#define CI_DMA_FAULT_THREAD_INDEX_READ_STRUCT                                  \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DMA_FAULT_THREAD_INDEX_READ_FRAME                                   \
	((0x3300000000000000L) | ((u64)(0x11) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_BKP_FAULT_THREAD_INDEX_READ_STRUCT                                  \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_BKP_FAULT_THREAD_INDEX_READ_FRAME                                   \
	((0x3300000000000000L) | ((u64)(0x12) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_MEM_FAULT_THREAD_INDEX_READ_STRUCT                                  \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_MEM_FAULT_THREAD_INDEX_READ_FRAME                                   \
	((0x3300000000000000L) | ((u64)(0x13) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_PC_LSB_READ_STRUCT                                                  \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_PC_LSB_READ_FRAME                                                   \
	((0x3300000000000000L) | ((u64)(0x14) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_PC_MSB_READ_STRUCT                                                  \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_PC_MSB_READ_FRAME                                                   \
	((0x3300000000000000L) | ((u64)(0x15) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_PC_MODE_READ_STRUCT                                                 \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_PC_MODE_READ_FRAME                                                  \
	((0x3300000000000000L) | ((u64)(0x16) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_PC_MODE_WRITE_STRUCT                                                \
	((0x1100000000000000L) | ((u64)(0b10111111) << 0) |                    \
	 ((u64)(0b0) << 8) | ((u64)(0) << 16) | ((u64)(0xff) << 24) |          \
	 ((u64)(0x2) << 32) | ((u64)(0x0) << 40))
#define CI_PC_MODE_WRITE_FRAME(pc_mode)                                        \
	((0x3300000000000000L) | ((u64)(pc_mode) << 0) | ((u64)(0) << 8) |     \
	 ((u64)(0) << 16) | ((u64)(0) << 24) | ((u64)(0) << 32) |              \
	 ((u64)(0) << 40) | ((u64)(0xa4) << 48))
#define CI_DPU_FAULT_STATE_READ_STRUCT                                         \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DPU_FAULT_STATE_READ_FRAME                                          \
	((0x3300000000000000L) | ((u64)(0x80) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DPU_FAULT_STATE_CLR_STRUCT                                          \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DPU_FAULT_STATE_CLR_FRAME                                           \
	((0x3300000000000000L) | ((u64)(0x86) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DPU_FAULT_STATE_SET_AND_STEP_STRUCT                                 \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DPU_FAULT_STATE_SET_AND_STEP_FRAME                                  \
	((0x3300000000000000L) | ((u64)(0x87) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DPU_RUN_STATE_READ_STRUCT                                           \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DPU_RUN_STATE_READ_FRAME                                            \
	((0x3300000000000000L) | ((u64)(0x84) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_BKP_FAULT_READ_STRUCT                                               \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_BKP_FAULT_READ_FRAME                                                \
	((0x3300000000000000L) | ((u64)(0xb0) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_BKP_FAULT_CLEAR_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_BKP_FAULT_CLEAR_FRAME                                               \
	((0x3300000000000000L) | ((u64)(0xb2) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_BKP_FAULT_SET_STRUCT                                                \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_BKP_FAULT_SET_FRAME                                                 \
	((0x3300000000000000L) | ((u64)(0xb3) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_POISON_FAULT_READ_STRUCT                                            \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_POISON_FAULT_READ_FRAME                                             \
	((0x3300000000000000L) | ((u64)(0xb4) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_POISON_FAULT_CLEAR_STRUCT                                           \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_POISON_FAULT_CLEAR_FRAME                                            \
	((0x3300000000000000L) | ((u64)(0xb6) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_POISON_FAULT_SET_STRUCT                                             \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_POISON_FAULT_SET_FRAME                                              \
	((0x3300000000000000L) | ((u64)(0xb7) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DMA_FAULT_READ_AND_CLR_STRUCT                                       \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DMA_FAULT_READ_AND_CLR_FRAME                                        \
	((0x3300000000000000L) | ((u64)(0x82) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_MEM_FAULT_READ_AND_CLR_STRUCT                                       \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_MEM_FAULT_READ_AND_CLR_FRAME                                        \
	((0x3300000000000000L) | ((u64)(0xf4) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_STACK_UP_READ_AND_CLR_STRUCT                                        \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_STACK_UP_READ_AND_CLR_FRAME                                         \
	((0x3300000000000000L) | ((u64)(0xf0) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_STACK_UP_READ_AND_SET_STRUCT                                        \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_STACK_UP_READ_AND_SET_FRAME                                         \
	((0x3300000000000000L) | ((u64)(0xf2) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_THREAD_BOOT_STRUCT                                                  \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_THREAD_BOOT_FRAME(thread_id)                                        \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_THREAD_RESUME_STRUCT                                                \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_THREAD_RESUME_FRAME(thread_id)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7d0320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_THREAD_CLR_RUN_STRUCT                                               \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_THREAD_CLR_RUN_FRAME(thread_id)                                     \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_THREAD_READ_RUN_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_THREAD_READ_RUN_FRAME(thread_id)                                    \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_IRAM_WRITE_INSTRUCTION_STRUCT(address)                              \
	((0x1100000000000000L) | ((u64)(0b11111111) << 0) |                    \
	 ((u64)(0b0) << 8) |                                                   \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 16) |                \
	 ((u64)(0x47) << 24) | ((u64)(0x2) << 32) | ((u64)(0x0) << 40))
#define CI_IRAM_WRITE_INSTRUCTION_FRAME(data, address)                         \
	((0x3300000000000000L) |                                               \
	 ((u64)((((data) >> (((0) << 3))) & 0xFFl)) << 0) |                    \
	 ((u64)((((data) >> (((1) << 3))) & 0xFFl)) << 8) |                    \
	 ((u64)((((data) >> (((2) << 3))) & 0xFFl)) << 16) |                   \
	 ((u64)((((data) >> (((3) << 3))) & 0xFFl)) << 24) |                   \
	 ((u64)((((data) >> (((4) << 3))) & 0xFFl)) << 32) |                   \
	 ((u64)((((data) >> (((5) << 3))) & 0xFFl)) << 40) |                   \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 48))
#define CI_IRAM_READ_BYTE0_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE0_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x40) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_IRAM_READ_BYTE1_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE1_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x41) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_IRAM_READ_BYTE2_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE2_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x42) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_IRAM_READ_BYTE3_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE3_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x43) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_IRAM_READ_BYTE4_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE4_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x44) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_IRAM_READ_BYTE5_STRUCT                                              \
	((0x1100000000000000L) | ((u64)(0b11) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IRAM_READ_BYTE5_FRAME(address)                                      \
	((0x3300000000000000L) |                                               \
	 ((u64)((((address) >> (((0) << 3))) & 0xFFl)) << 0) |                 \
	 ((u64)((((address) >> (((1) << 3))) & 0xFFl)) << 8) |                 \
	 ((u64)(0x45) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_WRAM_WRITE_WORD_STRUCT(address)                                     \
	((0x1100000000000000L) | ((u64)(0b11111111) << 0) |                    \
	 ((u64)(0b11) << 8) |                                                  \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(0x99) << 40))
#define CI_WRAM_WRITE_WORD_FRAME(data, address)                                \
	((0x3300000000000000L) |                                               \
	 ((u64)((((data) >> (((0) << 3))) & 0xFFl)) << 0) |                    \
	 ((u64)((((data) >> (((1) << 3))) & 0xFFl)) << 8) |                    \
	 ((u64)((((data) >> (((2) << 3))) & 0xFFl)) << 16) |                   \
	 ((u64)((((data) >> (((3) << 3))) & 0xFFl)) << 24) |                   \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(((((0x7c0044000000l | (((((u64)0) >> 0) & 7) << 17) |          \
		    (((((u64)0) >> 3) & 3) << 32) |                            \
		    (((((u64)24) >> 0) & 31) << 34) |                          \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 7) << 39) |             \
		    (((((u64)((address) << 2)) >> 7) & 1) << 24) |             \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0))) >>       \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 48))
#define CI_WRAM_READ_WORD_STRUCT                                               \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_WRAM_READ_WORD_FRAME(address)                                       \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x700344000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 1) << 27) |                            \
		    (((((u64)((address) << 2)) >> 0) & 15) << 20) |            \
		    (((((u64)((address) << 2)) >> 4) & 15) << 16) |            \
		    (((((u64)((address) << 2)) >> 8) & 1) << 15) |             \
		    (((((u64)((address) << 2)) >> 9) & 1) << 14) |             \
		    (((((u64)((address) << 2)) >> 10) & 1) << 13) |            \
		    (((((u64)((address) << 2)) >> 11) & 1) << 12) |            \
		    (((((u64)((address) << 2)) >> 12) & 4095) << 0) |          \
		    (((((u64)0) >> 0) & 31) << 39))) >>                        \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x99) << 48))
#define CI_IREPAIR_CONFIG_AB_STRUCT                                            \
	((0x1100000000000000L) | ((u64)(0b1010) << 0) | ((u64)(0b0) << 8) |    \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IREPAIR_CONFIG_AB_FRAME(msb, lsb_A, lsb_B)                          \
	((0x3300000000000000L) | ((u64)(0x90) << 0) | ((u64)(msb) << 8) |      \
	 ((u64)(0x91) << 16) | ((u64)((lsb_B) | ((lsb_A) << 4)) << 24) |       \
	 ((u64)(0xff) << 32) | ((u64)(0x2) << 40) | ((u64)(0x0) << 48))
#define CI_IREPAIR_CONFIG_CD_STRUCT                                            \
	((0x1100000000000000L) | ((u64)(0b1010) << 0) | ((u64)(0b0) << 8) |    \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IREPAIR_CONFIG_CD_FRAME(msb, lsb_C, lsb_D)                          \
	((0x3300000000000000L) | ((u64)(0x92) << 0) | ((u64)(msb) << 8) |      \
	 ((u64)(0x93) << 16) | ((u64)((lsb_D) | ((lsb_C) << 4)) << 24) |       \
	 ((u64)(0xff) << 32) | ((u64)(0x2) << 40) | ((u64)(0x0) << 48))
#define CI_IREPAIR_CONFIG_OE_STRUCT                                            \
	((0x1100000000000000L) | ((u64)(0b1010) << 0) | ((u64)(0b0) << 8) |    \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_IREPAIR_CONFIG_OE_FRAME(odd_index, even_index, timing)              \
	((0x3300000000000000L) | ((u64)(0x97) << 0) |                          \
	 ((u64)(((odd_index) >> 1)) << 8) | ((u64)(0x96) << 16) |              \
	 ((u64)((((timing) << 5) | ((even_index) >> 1))) << 24) |              \
	 ((u64)(0xff) << 32) | ((u64)(0x2) << 40) | ((u64)(0x0) << 48))
#define CI_REGISTER_FILE_TIMING_CONFIG_STRUCT                                  \
	((0x1100000000000000L) | ((u64)(0b1111111) << 0) | ((u64)(0b1) << 8) | \
	 ((u64)(0xa5) << 16) | ((u64)(0) << 24) | ((u64)(0xff) << 32) |        \
	 ((u64)(0x2) << 40))
#define CI_REGISTER_FILE_TIMING_CONFIG_FRAME(rf_timing)                        \
	((0x3300000000000000L) | ((u64)(0) << 0) | ((u64)(rf_timing) << 8) |   \
	 ((u64)(0) << 16) | ((u64)(0) << 24) | ((u64)(0) << 32) |              \
	 ((u64)(0) << 40) | ((u64)(0) << 48))
#define CI_CMD_BUS_CONFIG_DURATION_STRUCT                                      \
	((0x1100000000000000L) | ((u64)(0b10) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_CMD_BUS_CONFIG_DURATION_FRAME(duration)                             \
	((0x3300000000000000L) | ((u64)(0x4) << 0) | ((u64)(duration) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_CMD_BUS_CONFIG_SAMPLING_STRUCT                                      \
	((0x1100000000000000L) | ((u64)(0b10) << 0) | ((u64)(0b0) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_CMD_BUS_CONFIG_SAMPLING_FRAME(sampling)                             \
	((0x3300000000000000L) | ((u64)(0x5) << 0) | ((u64)(sampling) << 8) |  \
	 ((u64)(0xff) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_CMD_BUS_SYNC_STRUCT                                                 \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_CMD_BUS_SYNC_FRAME                                                  \
	((0x3300000000000000L) | ((u64)(0x7) << 0) | ((u64)(0xff) << 8) |      \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_RES_BUS_CONFIG_DURATION_STRUCT                                      \
	((0x1100000000000000L) | ((u64)(0b10111111) << 0) |                    \
	 ((u64)(0b0) << 8) | ((u64)(0) << 16) | ((u64)(0x2) << 24) |           \
	 ((u64)(0x0) << 32) | ((u64)(0x0) << 40))
#define CI_RES_BUS_CONFIG_DURATION_FRAME(duration)                             \
	((0x3300000000000000L) | ((u64)(duration) << 0) | ((u64)(0) << 8) |    \
	 ((u64)(0) << 16) | ((u64)(0) << 24) | ((u64)(0) << 32) |              \
	 ((u64)(0) << 40) | ((u64)(0xf6) << 48))
#define CI_RES_BUS_SYNC_STRUCT                                                 \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_RES_BUS_SYNC_FRAME                                                  \
	((0x3300000000000000L) | ((u64)(0xf7) << 0) | ((u64)(0xff) << 8) |     \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_NOTIFY_READ_STRUCT                                                  \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_NOTIFY_READ_FRAME(thread_id)                                        \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7c0330000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_NOTIFY_CLR_STRUCT                                                   \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_NOTIFY_CLR_FRAME(thread_id)                                         \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7c8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_NOTIFY_SET_STRUCT                                                   \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_NOTIFY_SET_FRAME(thread_id)                                         \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7d8320000000l | (((((u64)24) >> 0) & 31) << 34) |        \
		    (((((u64)0) >> 0) & 15) << 24) |                           \
		    (((((u64)(thread_id)) >> 0) & 15) << 20) |                 \
		    (((((u64)(thread_id)) >> 4) & 15) << 16) |                 \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x98) << 48))
#define CI_DEBUG_STD_REPLACE_STOP_ENABLED_STRUCT                               \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x2) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DEBUG_STD_REPLACE_STOP_ENABLED_FRAME                                \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((2) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 0) |                                                              \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((5) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 8) |                                                              \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((4) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 16) |                                                             \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((0) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 24) |                                                             \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((1) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 32) |                                                             \
	 ((u64)(((((0x7ef320000000l | (((((u64)0) >> 0) & 15) << 24) |         \
		    (((((u64)0) >> 0) & 65535) << 0))) >>                      \
		  (((3) << 3))) &                                              \
		 0xFFl))                                                       \
	  << 40) |                                                             \
	 ((u64)(0x9e) << 48))
#define CI_DEBUG_STD_REPLACE_CLEAR_STRUCT                                      \
	((0x1100000000000000L) | ((u64)(0b0) << 0) | ((u64)(0b0) << 8) |       \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40))
#define CI_DEBUG_STD_REPLACE_CLEAR_FRAME                                       \
	((0x3300000000000000L) | ((u64)(0x9c) << 0) | ((u64)(0x2) << 8) |      \
	 ((u64)(0x0) << 16) | ((u64)(0x0) << 24) | ((u64)(0x0) << 32) |        \
	 ((u64)(0x0) << 40) | ((u64)(0x0) << 48))
#define CI_DEBUG_STD_SAMPLE_PC_STRUCT                                          \
	((0x1100000000000000L) | ((u64)(0b111111) << 0) | ((u64)(0b0) << 8) |  \
	 ((u64)(0x9c) << 16) | ((u64)(0x2) << 24) | ((u64)(0x0) << 32) |       \
	 ((u64)(0x0) << 40))
#define CI_DEBUG_STD_SAMPLE_PC_FRAME                                           \
	((0x3300000000000000L) |                                               \
	 ((u64)(((((0x7c6300000000l)) >> (((2) << 3))) & 0xFFl)) << 0) |       \
	 ((u64)(((((0x7c6300000000l)) >> (((5) << 3))) & 0xFFl)) << 8) |       \
	 ((u64)(((((0x7c6300000000l)) >> (((4) << 3))) & 0xFFl)) << 16) |      \
	 ((u64)(((((0x7c6300000000l)) >> (((0) << 3))) & 0xFFl)) << 24) |      \
	 ((u64)(((((0x7c6300000000l)) >> (((1) << 3))) & 0xFFl)) << 32) |      \
	 ((u64)(((((0x7c6300000000l)) >> (((3) << 3))) & 0xFFl)) << 40) |      \
	 ((u64)(0x9e) << 48))
#endif /* UFI_DPU_COMMANDS_H */
